lithermes-ai 0.8.7 → 0.8.8

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/README.md CHANGED
@@ -62,7 +62,9 @@ Restart any running Hermes CLI or Hermes gateway process. Then open Hermes and t
62
62
  - `/lit-plan`: create a durable implementation plan.
63
63
  - Natural routing: a standalone `lit` or `litwork` in normal prose activates Litwork;
64
64
  `lit plan`, `lit review`, `lit research`, and `lit goal` route to the matching
65
- Lithermes mode contract. Tokens inside code spans, fenced code, substrings,
65
+ Lithermes mode contract; `lit workflow` / `lit kanban` route durable work to
66
+ Hermes Kanban setup/proposal guidance, and `lit team` maps team-like work to
67
+ Kanban profile lanes instead of claiming a literal native team mode. Tokens inside code spans, fenced code, substrings,
66
68
  compounds, paths, and real slash-command mentions are ignored.
67
69
  - `/litwork-loop` and `/litwork-plan`: longer aliases.
68
70
  - `/lit_loop` and `/lit_plan`: gateway-friendly aliases for Telegram dispatch.
@@ -70,6 +72,8 @@ Restart any running Hermes CLI or Hermes gateway process. Then open Hermes and t
70
72
  - Interactive install spinner keeps terminal installs lively while redirected or scripted installs stay plain; use `npx lithermes-ai install --yes --no-spinner` for quiet terminal installs.
71
73
  - `/start-work`: execution-only for an approved plan. Natural-language `lit start work`
72
74
  is `BLOCKED` because a hook cannot switch Hermes commands; invoke `/start-work <plan>` explicitly.
75
+ - `/review-work` records a local redacted `delegate_batch_intent` summary for its
76
+ single five-lane `delegate_task` batch under `.hermes/lithermes/runs/<run>/delegate_batches/<batch>/`.
73
77
  - LitHermes workflow skill set: `ai-slop-remover`, `comment-checker`,
74
78
  `debugging`, `deep-interview`, `frontend-ui-ux`, `git-master`, `init-deep`,
75
79
  `lsp`, `programming`, `refactor`,
@@ -93,6 +97,11 @@ Restart any running Hermes CLI or Hermes gateway process. Then open Hermes and t
93
97
  and uncertainty; keep any journal under `.hermes/lithermes/litresearch/`.
94
98
  - `lit goal`: litgoal mode. Bind one objective plus checkable criteria through
95
99
  `goal_set` / `goal_*` tools; state lives in `.hermes/lithermes/litgoal/`.
100
+ - `lit workflow` / `lit kanban`: durable-workflow mode. Probe `hermes version`,
101
+ `hermes kanban --help`, and `hermes profile list`; if setup is missing, print
102
+ `hermes kanban init` and `hermes gateway start` next steps. Create/propose a
103
+ Kanban root card only when setup and approval are present.
104
+ - `lit team`: no literal native team mode is claimed; use Hermes Kanban profile lanes.
96
105
  - `lit start work`: `BLOCKED` unless the user invokes the native `/start-work`
97
106
  command. `/start-work` is execution-only for approved plans.
98
107
 
package/README_Ko-KR.md CHANGED
@@ -62,13 +62,16 @@ npm 패키지명은 `lithermes-ai`이며, `lithermes`는 설치 후 CLI/plugin
62
62
  - `/lit-loop`: 같은 실행 loop를 명시적으로 호출합니다.
63
63
  - `/lit-plan`: 구현 계획을 먼저 세웁니다.
64
64
  - natural routing: 일반 문장 속 standalone lit / litwork / lit plan / lit review /
65
- lit research / lit goal을 Hermes-native mode로 라우팅합니다. code spans,
65
+ lit research / lit goal을 Hermes-native mode로 라우팅하고, lit workflow / lit kanban은
66
+ Hermes Kanban setup/proposal 안내로, lit team은 literal native team mode가 아니라
67
+ Kanban profile lane으로 매핑합니다. code spans,
66
68
  fenced code, substring, compound token, path 안의 lit, 실제 slash-command 언급은 무시합니다.
67
69
  - `/litwork-loop`, `/litwork-plan`: 긴 이름의 alias입니다.
68
70
  - `/lit_loop`, `/lit_plan`: Telegram dispatch에 맞춘 gateway alias입니다.
69
71
  - 네이티브 `/goal` 바인딩: Hermes에는 model-facing goal tool이 없으므로 `/lit`, `/lit-loop`, `/lit-plan`은 세션 goal manager를 통해 네이티브 standing `/goal`을 대신 설정합니다(턴을 넘어 유지되고 네이티브 evidence-judge가 완료를 판정). success criteria와 증거는 durable `goal_*` 도구로 추적합니다.
70
72
  - interactive install spinner가 terminal 설치는 더 생동감 있게 보여주고, redirect/script 설치는 기존처럼 plain output을 유지합니다. 조용한 terminal 설치가 필요하면 `npx lithermes-ai install --yes --no-spinner`를 사용합니다.
71
73
  - `/start-work`: 승인된 plan만 실행하는 execution-only 명령입니다. 자연어 `lit start work`는 hook이 Hermes command 전환을 할 수 없으므로 `BLOCKED`되고, 사용자가 `/start-work <plan>`을 직접 호출해야 합니다.
74
+ - `/review-work`: 단일 5-lane `delegate_task` batch에 대해 redacted local `delegate_batch_intent` 요약을 `.hermes/lithermes/runs/<run>/delegate_batches/<batch>/`에 기록합니다.
72
75
  - LitHermes workflow skill set: `ai-slop-remover`, `comment-checker`,
73
76
  `debugging`, `deep-interview`, `frontend-ui-ux`, `git-master`, `init-deep`,
74
77
  `lsp`, `programming`, `refactor`,
@@ -85,6 +88,10 @@ npm 패키지명은 `lithermes-ai`이며, `lithermes`는 설치 후 CLI/plugin
85
88
  - `lit review`: review-work mode입니다. behavior, tests, docs/package readiness, security/safety, cleanup evidence를 5-lane으로 검증합니다.
86
89
  - `lit research`: verified facts, hypotheses, sources, uncertainty를 분리하고 journal은 `.hermes/lithermes/litresearch/`에 둡니다.
87
90
  - `lit goal`: one objective plus checkable criteria를 `.hermes/lithermes/litgoal/`에 `goal_*` 도구로 기록합니다.
91
+ - `lit workflow` / `lit kanban`: durable-workflow mode입니다. `hermes version`,
92
+ `hermes kanban --help`, `hermes profile list`를 먼저 확인하고, setup이 없으면
93
+ `hermes kanban init`, `hermes gateway start` 안내만 출력합니다. setup과 승인이 있을 때만 Kanban root card를 만들거나 제안합니다.
94
+ - `lit team`: literal native team mode를 주장하지 않고 Hermes Kanban profile lane을 사용합니다.
88
95
  - `lit start work`: `BLOCKED`; 승인된 plan에 대해 native `/start-work <approved-plan>`을 직접 호출해야 합니다.
89
96
 
90
97
  Natural routing은 `code spans`, fenced code, `/lit` 같은 실제 slash-command mention,
@@ -21,7 +21,10 @@ CLI/plugin name, not the npm package name.
21
21
  execution-only and never bootstraps a plan from a brief.
22
22
  - The `pre_llm_call` hook injects an Litwork directive when the user says
23
23
  a standalone `lit` or `litwork`. It also routes `lit plan`, `lit review`,
24
- `lit research`, and `lit goal` to the matching `lithermes:*` skill contract.
24
+ `lit research`, `lit goal`, and durable `lit workflow` / `lit kanban` / `lit team`
25
+ intents to the matching Hermes-native contract. Kanban routes are setup/proposal
26
+ guidance for Hermes Kanban profile lanes; `lit team` does not claim a literal
27
+ native team mode.
25
28
  Hermes has no model-facing goal tools, so a direct `lit <task>` (and the /lit
26
29
  command) binds the native standing `/goal` via the session goal manager;
27
30
  criteria + evidence use the durable `goal_*` tools.
@@ -36,7 +39,8 @@ CLI/plugin name, not the npm package name.
36
39
  `lithermes:lit-plan`, `lithermes:litgoal`, and `lithermes:litwork`.
37
40
  - Delegation fans lanes out through the native `delegate_task` tool (children
38
41
  run in parallel, the parent blocks for all); there is no named-agent registry
39
- and no per-child model selection.
42
+ and no per-child model selection. Broad review commands record a local redacted
43
+ `delegate_batch_intent` summary under `.hermes/lithermes/runs/<run>/delegate_batches/<batch>/`.
40
44
 
41
45
  ## Mode Contract
42
46
 
@@ -50,6 +54,11 @@ CLI/plugin name, not the npm package name.
50
54
  journals live under `.hermes/lithermes/litresearch/<slug>/`.
51
55
  - `lit goal`: bind one objective plus checkable criteria in
52
56
  `.hermes/lithermes/litgoal/`.
57
+ - `lit workflow` / `lit kanban`: durable-workflow setup/proposal mode through
58
+ Hermes Kanban. Probe `hermes version`, `hermes kanban --help`, and
59
+ `hermes profile list`; initialize/start gateway if missing; create/propose a
60
+ Kanban root card only after setup and approval.
61
+ - `lit team`: no literal native team mode is claimed; use Hermes Kanban profile lanes.
53
62
  - `lit start work`: `BLOCKED` in natural routing because `pre_llm_call` cannot
54
63
  switch Hermes commands. The user must invoke `/start-work <approved-plan>`.
55
64
 
@@ -198,6 +198,66 @@ def record_event(event: str, **fields: Any) -> None:
198
198
  pass
199
199
 
200
200
 
201
+ _REMOTE_REF_RE = re.compile(r"https?://[^\s,;\"'<>]+", re.IGNORECASE)
202
+
203
+
204
+ def _redact_local_only_preview(value: Any) -> str:
205
+ """Small local-only diagnostic preview for event metadata.
206
+
207
+ Delegate batch events must never become remote telemetry. Keep the preview
208
+ bounded, secret-redacted, and URL-redacted so audit logs prove intent without
209
+ preserving endpoints or pasted secret-bearing child context.
210
+ """
211
+ text = json.dumps(redact_obj(value), sort_keys=True) if not isinstance(value, str) else redact_text(value)
212
+ text = _REMOTE_REF_RE.sub("[REDACTED_URL]", text)
213
+ return text[:1000]
214
+
215
+
216
+ def record_delegate_batch_intent(
217
+ *,
218
+ workspace: Path,
219
+ mode: str,
220
+ lanes: Iterable[str],
221
+ session_id: str = "",
222
+ context: Any = None,
223
+ ) -> dict[str, Any]:
224
+ """Record a local, redacted intent event for a Hermes delegate_task batch.
225
+
226
+ This is evidence only: it does not orchestrate workers, create persistent
227
+ teams, or send telemetry anywhere. Hermes still performs the actual short
228
+ parallel work through one synchronous delegate_task batch.
229
+ """
230
+ rid = run_id("lithermes")
231
+ batch_id = run_id("delegate-batch")
232
+ lane_list = [str(lane) for lane in lanes]
233
+ artifact_dir = lithermes_dir(workspace) / "runs" / rid / "delegate_batches" / batch_id
234
+ payload = {
235
+ "event": "delegate_batch_intent",
236
+ "timestamp": utc_now().isoformat(),
237
+ "session_id": session_id,
238
+ "run_id": rid,
239
+ "batch_id": batch_id,
240
+ "mode": mode,
241
+ "lanes": lane_list,
242
+ "artifact_dir": str(artifact_dir) + "/",
243
+ }
244
+ if context is not None:
245
+ payload["context_preview"] = _redact_local_only_preview(context)
246
+ try:
247
+ artifact_dir.mkdir(parents=True, exist_ok=True)
248
+ (artifact_dir / "summary.json").write_text(
249
+ json.dumps(redact_obj(payload), indent=2, sort_keys=True) + "\n",
250
+ encoding="utf-8",
251
+ )
252
+ except OSError:
253
+ pass
254
+ try:
255
+ append_jsonl(event_log_path(), payload)
256
+ except OSError:
257
+ pass
258
+ return redact_obj(payload)
259
+
260
+
201
261
  _RUN_CONTEXT_TASK_PATTERN = re.compile(r"^task:\s*(?P<task>.+?)\s*$", re.MULTILINE)
202
262
 
203
263
 
@@ -282,6 +342,17 @@ def detect_lit_mode(message: str) -> NaturalLitRoute | None:
282
342
  if token == "litwork":
283
343
  return NaturalLitRoute(mode="litwork", objective=_clamp_task(after), visible_message=visible)
284
344
 
345
+ for word in ("workflow", "kanban"):
346
+ rest = _after_mode_word(after, word)
347
+ if rest is not None:
348
+ return NaturalLitRoute(mode="durable-workflow", objective=_clamp_task(rest), visible_message=visible)
349
+
350
+ team_rest = _after_mode_word(after, "team")
351
+ if team_rest is not None:
352
+ mode_rest = _after_mode_word(team_rest, "mode")
353
+ objective = mode_rest if mode_rest is not None else team_rest
354
+ return NaturalLitRoute(mode="kanban-team", objective=_clamp_task(objective), visible_message=visible)
355
+
285
356
  start_rest = _after_start_work(after)
286
357
  if start_rest is not None:
287
358
  block = (
@@ -312,6 +383,33 @@ def detect_lit_mode(message: str) -> NaturalLitRoute | None:
312
383
 
313
384
  def build_natural_mode_context(route: NaturalLitRoute) -> str:
314
385
  objective = route.objective or "(no objective text supplied — ask for the missing objective if needed)"
386
+ if route.mode in {"durable-workflow", "kanban-team"}:
387
+ team_note = (
388
+ "Hermes has no literal native team mode; team-like work maps to Hermes Kanban profile lanes and worker lanes."
389
+ if route.mode == "kanban-team"
390
+ else "Hermes durable-workflow route: use Hermes Kanban for broad/background work."
391
+ )
392
+ return "\n".join(
393
+ [
394
+ f"<lithermes-natural-route mode=\"{route.mode}\">",
395
+ "Natural routing: durable-workflow intent -> Hermes Kanban.",
396
+ team_note,
397
+ f"Objective: {objective}",
398
+ "Mode Contract: setup/propose only unless Kanban is already available, initialized, and the user approved creation.",
399
+ "Capability probe before creating anything:",
400
+ "- hermes version",
401
+ "- hermes kanban --help",
402
+ "- hermes profile list",
403
+ "If setup is missing, do not fake a workflow start; print these next commands:",
404
+ "- hermes kanban init",
405
+ "- hermes gateway start",
406
+ "- hermes profile list",
407
+ "If setup and approval are present, create/propose a Kanban root card via kanban_create or `hermes kanban create`.",
408
+ "Root card fields: title/objective, acceptance criteria, assignee/profile, workspace, skills, dependencies, and goal_mode when open-ended.",
409
+ "External CLI worker lanes are not paved without a separate spawn_fn integration; do not promise them.",
410
+ "</lithermes-natural-route>",
411
+ ]
412
+ )
315
413
  if route.blocked:
316
414
  return "\n".join(
317
415
  [
@@ -986,6 +1084,16 @@ def command_review_work(raw_args: str) -> dict[str, str]:
986
1084
  diff = diff[:60000] + "\n... [diff truncated at 60k chars — lanes should read full files as needed]"
987
1085
  run_cmd = detect_run_command(workspace)
988
1086
  files_block = changed or "(no changed files detected vs " + base + ")"
1087
+ batch_event = record_delegate_batch_intent(
1088
+ workspace=workspace,
1089
+ mode="review-work",
1090
+ lanes=[key for key, _ in REVIEW_LANES],
1091
+ context={
1092
+ "base": base,
1093
+ "changed_file_count": len([f for f in changed.splitlines() if f.strip()]),
1094
+ "run_command": run_cmd,
1095
+ },
1096
+ )
989
1097
 
990
1098
  lane_lines = []
991
1099
  for key, brief in REVIEW_LANES:
@@ -998,6 +1106,7 @@ def command_review_work(raw_args: str) -> dict[str, str]:
998
1106
  f"workspace: {workspace}",
999
1107
  f"base: {base}",
1000
1108
  f"run command (for QA lane): {run_cmd}",
1109
+ f"delegate batch evidence: {batch_event.get('artifact_dir', '')}",
1001
1110
  "",
1002
1111
  "Changed files:",
1003
1112
  files_block,
@@ -1,7 +1,7 @@
1
1
  {
2
- "syncedAt": "2026-06-19T02:30:00.000Z",
2
+ "syncedAt": "2026-06-21T06:34:00.000Z",
3
3
  "source": "source-reference",
4
- "sourceHash": "0a2b29742e4410128d26429945f694c77d47dc5a0d3f80a6bda8b1cbbb21200f",
4
+ "sourceHash": "19037e85902a521d49548d34c1ceaefa0894d89343ed1829ed5cb85500eeedfb",
5
5
  "files": [
6
6
  {
7
7
  "path": "NOTICE.md",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  {
11
11
  "path": "README.md",
12
- "sha256": "29a32fca9db9fd12a2a9e307e93f44ba2a8274fde19946011944958c1a1ebc6d"
12
+ "sha256": "9eea08f516c7db2a6d1f8c622b6ea3f6b18a37e800013c38cfbb062a0594b28a"
13
13
  },
14
14
  {
15
15
  "path": "__init__.py",
@@ -17,7 +17,7 @@
17
17
  },
18
18
  {
19
19
  "path": "core.py",
20
- "sha256": "d0689b196a2721c99c3c83a5e82482869da0d80e57a52c07f54d9268989c31b0"
20
+ "sha256": "2784fd77147e539e32aee44db81ecc6744ae084732eaf134e90313b3e2cacd48"
21
21
  },
22
22
  {
23
23
  "path": "litgoal/__init__.py",
@@ -49,7 +49,7 @@
49
49
  },
50
50
  {
51
51
  "path": "plugin.yaml",
52
- "sha256": "9d49a09370193484755d21941af9f6d977dfef780c7a8d6657c115ff643b0bbd"
52
+ "sha256": "92bb4dabbc0de842b811471a407a426dd6165d96a433937ab9ab687c4291ad5e"
53
53
  },
54
54
  {
55
55
  "path": "redaction.py",
@@ -65,7 +65,7 @@
65
65
  },
66
66
  {
67
67
  "path": "skills/debugging/SKILL.md",
68
- "sha256": "48bdb0df0f41633aca17d6193aa98aabac4c49cc25c36e50f26b020f89f77d43"
68
+ "sha256": "5b1b4f536579d0fb459eb9e5a79ee7d70bad26149799c0417b3c258b3f00bba5"
69
69
  },
70
70
  {
71
71
  "path": "skills/debugging/references/methodology/00-setup.md",
@@ -169,7 +169,7 @@
169
169
  },
170
170
  {
171
171
  "path": "skills/litresearch/SKILL.md",
172
- "sha256": "363468a509f7743037b2f132171b7b1351d11c10680985a49cab1693855a0a20"
172
+ "sha256": "31ee558ac64f3cadd229adf5255255cd7bf3fa5a8dbc049920d7ed7692ea2c96"
173
173
  },
174
174
  {
175
175
  "path": "skills/litwork/SKILL.md",
@@ -281,7 +281,7 @@
281
281
  },
282
282
  {
283
283
  "path": "skills/programming/SKILL.md",
284
- "sha256": "ffb201197e7386c848f8efb9b90d0a024d7b8000e8bea1b13b0ed7a83627a56b"
284
+ "sha256": "a373df296ce4ce7e0fed2118a11e6cc70eedcc6e81520035d097d079a6484f99"
285
285
  },
286
286
  {
287
287
  "path": "skills/programming/references/go/README.md",
@@ -569,7 +569,7 @@
569
569
  },
570
570
  {
571
571
  "path": "skills/refactor/SKILL.md",
572
- "sha256": "d4e160e256b5a5e1fae4170edeee7a6bc8e2338bbebec797e24f07ea70687a10"
572
+ "sha256": "37913c1154e1110492f14cafe3836e344728b1fd85a7a324e837e52b9f03e3d6"
573
573
  },
574
574
  {
575
575
  "path": "skills/remove-ai-slops/SKILL.md",
@@ -577,7 +577,7 @@
577
577
  },
578
578
  {
579
579
  "path": "skills/review-work/SKILL.md",
580
- "sha256": "4af425ec7924f1cd3d5fac633351f84d587cbaa68498d46daad9faf066c937ec"
580
+ "sha256": "a232c83f95b2109231c4b752267d5bc0a96a4c853c7e7b8b590c73445391d94a"
581
581
  },
582
582
  {
583
583
  "path": "skills/rules/SKILL.md",
@@ -1,5 +1,5 @@
1
1
  name: lithermes
2
- version: 0.8.7
2
+ version: 0.8.8
3
3
  description: "Hermes-native workflow toolkit: litgoal durable runtime, 5-lane review orchestrator, Litwork commands, skills, and prompt steering."
4
4
  author: "Hermes Agent"
5
5
  kind: standalone
@@ -67,7 +67,7 @@ Each phase has exactly one reference. Read it as you enter the phase — not in
67
67
  | 0 | **Environment assessment** — know the runtime, ports, symbols, env vars, watchers before attaching | [references/methodology/00-setup.md](references/methodology/00-setup.md) |
68
68
  | 1 | **Journal setup** — single `.debug-journal.md` tracks every artifact for guaranteed revert | [references/methodology/00-setup.md](references/methodology/00-setup.md) |
69
69
  | 2 | **Hypothesis formation** — minimum three, across orthogonal axes, each with distinguishing evidence | [references/methodology/02-investigate.md](references/methodology/02-investigate.md) |
70
- | 3 | **Parallel investigation** — team mode `debug-squad` when enabled, async subagents otherwise | [references/methodology/02-investigate.md](references/methodology/02-investigate.md) |
70
+ | 3 | **Parallel investigation** — one Hermes-native `delegate_task` batch for short investigations; use Kanban profile lanes for durable/background debugging programs | [references/methodology/02-investigate.md](references/methodology/02-investigate.md) |
71
71
  | 4 | **Oracle Triple** — after 2 consecutive failed rounds, spawn three Oracles with orthogonal framings and synthesize | [references/methodology/04-oracle-triple.md](references/methodology/04-oracle-triple.md) |
72
72
  | 5 | **User decision escalation** — only when evidence exhausted and the call has policy implications | [references/methodology/05-escalate.md](references/methodology/05-escalate.md) |
73
73
  | 6 | **Root cause confirmation** — confirmed only when toggling the suspected cause toggles the bug | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
@@ -28,6 +28,11 @@ If a single retrieval would answer it, do that directly and do not invoke litres
28
28
 
29
29
  Everything in this skill runs on one tool: the native `delegate_task`.
30
30
 
31
+ Use this mode for short, in-turn research where the parent should wait for the
32
+ parallel children and synthesize their returns. If the user asks for durable,
33
+ background, dynamic-workflow-style collaboration, route to Hermes Kanban (`lit workflow`
34
+ / `lit kanban`) instead of stretching `delegate_task` into a queue.
35
+
31
36
  - **Parallel swarm fan-out** is a single `delegate_task` call carrying a `tasks` array — one entry per worker. The parent blocks until every child in the batch stops, then you merge their returns. This replaces any notion of a separate workflow tool, background spawning, or named-agent registry: there is no `subagent_type`, no per-child model selection, and no foreign agent name. You shape each child entirely through its `goal`, `context`, optional `toolsets`, and optional `role`.
32
37
  - **Worker roles** (codebase explorer, web/docs librarian, browsing, repo deep-dive, verifier) are not registered agents. Each is a read-only `delegate_task` child whose `goal`/`context` fully describe the role's mandate, scope, protocol, and required reply tail. Two children differ only by the text you give them.
33
38
  - **Recursion** comes from your expansion waves, not from a child spawning its own children. Children are leaves; depth is the parent's job.
@@ -32,6 +32,11 @@ section wins — every foreign delegation call in the prose below is a LEGACY il
32
32
  copied from another harness; never call any of them literally, map each to a
33
33
  `delegate_task` child.
34
34
 
35
+ For durable/background refactor programs that need profile assignees, dependencies,
36
+ comments, and audit trails over time, use Hermes Kanban through the `lit workflow` /
37
+ `lit kanban` route. Do not fake a persistent refactor team on top of short `delegate_task`
38
+ batches.
39
+
35
40
  export const REFACTOR_TEMPLATE = `# Intelligent Refactor Command
36
41
 
37
42
  ## Usage
@@ -22,6 +22,11 @@ the five lane briefs plus the gate contract. Then:
22
22
  Lane → child mapping (dispatch all five in the single batch):
23
23
  `goal` · `qa` · `code-quality` · `security` (supplementary) · `context/docs/package`.
24
24
 
25
+ The `/review-work` command records a local, redacted `delegate_batch_intent` event and
26
+ summary directory before handing off to the model. Treat this as audit evidence only:
27
+ it does not create a persistent team, does not make remote telemetry, and does not
28
+ replace Hermes' fork/join `delegate_task` execution.
29
+
25
30
  Each child returns: `verdict` (PASS|FAIL), `confidence`, and findings with `file:line`.
26
31
  The review must cover behavior, tests, docs/package readiness, security/safety,
27
32
  and cleanup evidence; green tests without a real-surface probe are insufficient.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lithermes-ai",
3
- "version": "0.8.7",
3
+ "version": "0.8.8",
4
4
  "description": "npx/bunx installer for the LitHermes Hermes plugin",
5
5
  "license": "MIT",
6
6
  "repository": {